package com.example.temp;

import android.os.Build;

import androidx.annotation.RequiresApi;

import java.util.Arrays;
import java.util.List;
import java.util.Stack;

public class Test {

    public static void main(String[] args) {
        int a = 12%11;
        System.out.println(a);
//        System.out.println(replaceBlank("we are happy"));
//        reverse();
    }

    public void tes1(String s){
        System.out.println(s+"----");
    }
    public void test(String s){
        System.out.println(s);
    }


    @RequiresApi(api = Build.VERSION_CODES.N)
    public void test2(){
        List<String> list = Arrays.asList("aaaa", "bbbb", "cccc");

        //对象实例语法	instanceRef::methodName
        list.forEach(new Test()::test);
    }


//    请实现一个函数，把字符串中的每个空格替换成“%20”
    public static String replaceBlank(String s){

        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == ' '){
                sb.append("20%");
            }else {
                sb.append(s.charAt(i));
            }

        }
        return sb.toString();
    }

    //单链表反转
    static class Node{

        int data;
        Node next;

        public Node(int data){
            this.data = data;
        }

    }

    //利用栈
    public static void reverse() {
        Node node1 = new Node(1);
        Node node2 = new Node(2);
        Node node3 = new Node(3);

        node1.next = node2;
        node2.next = node3;

        Stack<Node> stack = new Stack<>();

        while (node1!=null){
            stack.push(node1);
            node1 = node1.next;
        }

        while (!stack.isEmpty()){
            System.out.println(stack.pop().data);
        }

    }

    //输入二叉树的前序遍历和中序遍历的结果，重建出该二叉树。假设前
    //序遍历和中序遍历结果中都不包含重复的数字，例如输入的前序遍历序列
    //{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}重建出如图所示的二叉
    //树

//   用两个栈实现一个队列，实现对了的两个函数 appendTail 和
//deleteHead，分别完成在队列尾插入结点和在队列头部删除结点的功能。

    Stack stack1 = new Stack();
    Stack stack2 = new Stack();
    public void appendTail(int i){
        stack1.push(i);
    }

    public void deleteHead() throws Exception {
        while (!stack1.isEmpty()){
            stack2.push(stack1.pop());
        }
        if (stack2.isEmpty()){
            throw new Exception("队列为空");
        }
        stack2.pop();
    }

    //斐波那契数列1、1、2、3、5、8、13、21、34(从第3项开始，每一项都等于前两项之和)
//    写一个函数，输入 n，求斐波那契数列的第 n 项
    public int getFibonacci(int n){

        if(n==1||n==2){
            return 1;
        }else {

           //利用循环从第二个往后加
            return 1;
        }

    }



    //输入一个字符串，打印出该字符串中字符的所有排列。
}
